package com.wjp.banquet.controller;

import com.github.pagehelper.PageInfo;
import com.wjp.banquet.common.util.MessageUtil;
import com.wjp.banquet.common.util.ParamCheckUtil;
import com.wjp.banquet.common.vo.CommonRsp;
import com.wjp.banquet.dto.BanquetAddDTO;
import com.wjp.banquet.dto.BanquetPageQueryDTO;
import com.wjp.banquet.dto.BanquetSealOptDTO;
import com.wjp.banquet.service.BanquetService;
import com.wjp.banquet.vo.BanquetVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;
import java.util.List;

/**
 * @Author 王君平
 * @Date 2024/4/23 16:52
 * @Description
 */
@Slf4j
@Api(value = "酒席", tags = {"酒席"})
@RequestMapping("/banquet")
@RestController
public class BanquetController {

    @Autowired
    private BanquetService banquetService;


    @ApiOperation(value = " 作者：王君平 日期： 2023年8月28日")
    @PostMapping("")
    public CommonRsp<?> add(@Valid @RequestBody BanquetAddDTO dto, BindingResult bindingResult) {
        ParamCheckUtil.verifyBindingResult(bindingResult);
        banquetService.add(dto);
        return MessageUtil.success();
    }

    @ApiOperation(value = "分页列表 作者：王君平 日期： 2023年8月31日", response = BanquetVO.class)
    @GetMapping("page")
    public CommonRsp<PageInfo<BanquetVO>> pageList(BanquetPageQueryDTO dto) {
        PageInfo<BanquetVO> pageInfo = banquetService.pageList(dto);
        return MessageUtil.success(pageInfo);
    }

    @ApiOperation(value = "列表 作者：王君平 日期： 2023年8月31日", response = BanquetVO.class)
    @GetMapping("all")
    public CommonRsp<List<BanquetVO>> allList(BanquetPageQueryDTO dto) {
        List<BanquetVO> list = banquetService.allList(dto);
        return MessageUtil.success(list);
    }

    @ApiOperation(value = "作者：王君平 日期： 2023年8月31日", response = BanquetVO.class)
    @GetMapping("getById")
    public CommonRsp<BanquetVO> getById(@ApiParam(value = "id", required = true) Integer id) {
        BanquetVO vo = banquetService.getById(id);
        return MessageUtil.success(vo);
    }

    @ApiOperation(value = " 作者：王君平 日期： 2023年8月31日", response = BanquetVO.class)
    @GetMapping("getByIdWithSummary")
    public CommonRsp<BanquetVO> getByIdWithSummary(@ApiParam(value = "id", required = true) Integer id) {
        BanquetVO vo = banquetService.getByIdWithSummary(id);
        return MessageUtil.success(vo);
    }

    @ApiOperation(value ="修改 作者：王君平 日期： 2023年8月30日")
    @PutMapping("seal")
    public CommonRsp<?> seal(@RequestBody BanquetSealOptDTO dto){
        banquetService.seal(dto);
        return MessageUtil.success();
    }

    @ApiOperation(value ="修改 作者：王君平 日期： 2023年8月30日")
    @PutMapping("unSeal")
    public CommonRsp<?> unSeal(@RequestBody BanquetSealOptDTO dto){
        banquetService.unSeal(dto);
        return MessageUtil.success();
    }

}
